class MineAgent:
    """The agent playing a game of minesweep, this should be subclassed to provide
    functionality for the methods below. This is a python port of Patric Jensfelts
    MineAgent.java by Simon Pettersson."""

    def startNewGame(self,numPlayers,playerID,
                     xSize,ySize,
                     deadCost,peekCost):
        """
        Called by the client when the servers signals that it likes to start a new game.
        Return True if initialization went ok
        
        numPlayers tells how many players are playing this game
        playerID is he id for this player in the game
        xSize is the width of the board
        ySize is the height of the board
        deadCost is the cost to die
        peekCost is the cost to take a peek at a square
        """
        abstract

    def getNextMove(self):
        """
        Return the move suggested by the agent given the information
        it has gathered so far. The return value should be an object 
        of type MineMove
        """
        abstract

    def handleInfo(self,info):
        """
        This function is called by the client after a square is opened,
        another player has died or stopped playing. The object received
        is of type MineInfo
        """
        abstract
        

    
